' Just call CB_SAVEPOS(id_string) at the very beginning of your Dialog CALLBACK ' to save and restore position of your Dialog upon creation / closing '------------------------------------------------------------------------------ MACRO CB_SAVEPOS(POS_FILE) SELECT CASE AS LONG CB.MSG CASE %WM_INITDIALOG LoadDialogPos CB.HNDL, POS_FILE CASE %WM_SYSCOMMAND SaveDialogPos CB.HNDL, POS_FILE END SELECT END MACRO '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ SUB SaveDialogPos(BYVAL hDlg AS DWORD, BYVAL POS_FILE AS STRING) LOCAL ff, x, y AS LONG IF IsIconic(hDlg) THEN EXIT SUB DIALOG GET LOC hDlg TO x, y ff = FREEFILE OPEN LocalAppdata() + POS_FILE + ".pos" FOR OUTPUT AS #ff PRINT #ff, x PRINT #ff, y CLOSE #ff END SUB '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ SUB LoadDialogPos(BYVAL hDlg AS DWORD, BYVAL POS_FILE AS STRING) LOCAL ff, x, y AS LONG LOCAL e AS STRING IF NOT EXIST(LocalAppdata() + POS_FILE + ".pos") THEN EXIT SUB ff = FREEFILE OPEN LocalAppdata() + POS_FILE + ".pos" FOR INPUT AS #ff LINE INPUT #ff, e : x = VAL(e) LINE INPUT #ff, e : y = VAL(e) CLOSE #ff IF x <> 0 OR y <> 0 THEN DIALOG SET LOC hDlg, x, y END IF END SUB '------------------------------------------------------------------------------